﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 02/04/2014
 * Time: 02:33 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;

namespace Gestión_UTN.blimpl
{
	/// <summary>
	/// Description of materiablimpl.
	/// </summary>
	public class materiablimpl:Gestión_UTN.bl.materiabl
	{
		private static Gestión_UTN.da.materiada createMateria = Gestión_UTN.factories.dafactory.createMateria();
		private static Gestión_UTN.bl.carrerabl createCarrera = Gestión_UTN.factories.blfactory.createCarrera();
		
		public materiablimpl()
		{
		}
		
		public bool SaveMateria(Gestión_UTN.bo.Materiabo m)
		{
			bool ingresada = false;
			
			try 
			{
				Gestión_UTN.bo.Carrerabo car = (null != m)
					? createCarrera.FindCarreraByNombre(m.Carrera)
					: null;
				
				ingresada = (null != car) 
					? createMateria.SaveMateria(m.Nombre,car.Car_id)
					: false;
					
			} 
			catch (Exception) 
			{
				ingresada = false;
			}
			
			return ingresada;
		}
		
		public bool DeleteMateria(Gestión_UTN.bo.Materiabo m)
		{
			bool eliminada = false;
			
			try 
			{
				Gestión_UTN.bo.Carrerabo car = (null != m)
					? createCarrera.FindCarreraByNombre(m.Carrera)
					: null;
				
				eliminada = (null != car) 
					? createMateria.DeleteMateria(m.Nombre,car.Car_id)
					:false;
				
			} 
			catch (Exception)
			{
				eliminada = false;
			}
			
			return eliminada;
		}
		
		public bool ModifyMateria(Gestión_UTN.bo.Materiabo m_anterior, Gestión_UTN.bo.Materiabo m)
		{
			bool modificada = false;
			
			try
			{
				Gestión_UTN.bo.Carrerabo car = (null != m)
					? createCarrera.FindCarreraByNombre(m.Carrera)
					: null;
				
				Gestión_UTN.bo.Carrerabo car_anterior = (null != m_anterior)
					? createCarrera.FindCarreraByNombre(m_anterior.Carrera)
					: null;
				
				modificada = (null != car && null != car_anterior)
					? createMateria.ModifyMateria(m_anterior.Nombre,car_anterior.Car_id,
					                              m.Nombre,car.Car_id)
					:false;
			}
			catch (Exception)
			{
				modificada = false;
			}
			
			return modificada;
		}
		
		public System.Data.DataTable FindAllMaterias()
		{
			DataTable tablaMaterias = null;
			
			try 
			{
				tablaMaterias = createMateria.FindAllMaterias();
			} 
			catch (Exception) 
			{
				tablaMaterias = null;
			}
			
			return tablaMaterias;
		}
		
		public Gestión_UTN.bo.Materiabo FindMateriaByMatId(int mat_id)
		{
			Gestión_UTN.bo.Materiabo materia = null;
			
			try 
			{
				Gestión_UTN.Entities.Materia m = (0 != mat_id)
					? createMateria.FindMateriaByMatId(mat_id)
					: null;
				
				Gestión_UTN.bo.Carrerabo car = (null != m)
					? createCarrera.FindCarreraById(m.Car_id)
					: null;
				
				materia = (null != car)
					? new Gestión_UTN.bo.Materiabo(m.Id,m.Nombre,car.Nombre)
					: null;
			} 
			catch (Exception) 
			{
				materia = null;
			}
			
			return materia;
		}
	}
}
